package com.my.demo;

/**
 * @author Huangjin
 * @version 1.0
 * describe:
 * @date 2023/2/18 9:38
 */
public class Test {
    public static void main(String[] args) {
        System.out.println("JVM启动main线程，main线程执行main方法");
        //3）创建子线程对象
        MyThread thread = new MyThread();
        //4)启动线程
        thread.start();
        /*
            调用线程的start()方法来启动线程，启动线程的实质就是请求JVM运行想应的线程，
            这个线程具体在什么时候运行有线程调度器(Scheduler)决定的
            注意：
                start()方法调用结束并不意味着子线程开始运行
                新开启的线程汇之星run（）方法
                如果开启了多个线程，start()调用的顺序并不一定就是线程启动的顺序
                多线程运行结果与代码执行调用顺序无关
         */
        System.out.println("main线程后面的其他  代码...");
        //当前是main线程
        for (int i = 1; i <= 1000; i++) {
            System.out.println("main==>"+i);
        }

        //有事调用Thread(Runnable)构造方法，实参也会传递匿名内部类对象
        Thread thread2 = new Thread(new Runnable(){
            @Override
            public void run(){
                for (int i = 1; i <= 1000; i++) {
                    System.out.println("sub ------------------>"+i);
                }
            }
        });
        thread2.start();
    }
}
